Decentralized applications, in which a client component interfaces with a distributed component stored in a blockchain system, are an increasingly popular form of application due to benefits provided by the underlying architecture, such as freedom from the necessity of a centralized clearing authority, increased resistance to subversive attacks, etc. In some of these applications, the distributed component includes a set of program instructions, also referred to as a contract or smart contract, stored in the blockchain system, which may be executed in response to a transaction addressed to the contract.
However, implementations of such applications to date have suffered from problems. Typically, the distributed component, such as the smart contract, accepts transactions from an address, with the user behind the address being unknown to the component. This presents potential security and efficiency risks, as a subset of these transactions may be of a malicious or otherwise undesirable form, which may seek to use the decentralized application in an unauthorized manner, such as to steal assets stored in the blockchain system, attack other applications or components of the blockchain system, disrupt operation of the decentralized application or other components of the blockchain system, etc.
Thus, a need exits for systems and methods to enable decentralized application to execute only authorized transactions.